"use strict";

require("core-js/modules/es.object.keys.js");

require("core-js/modules/es.symbol.js");

require("core-js/modules/es.array.filter.js");

require("core-js/modules/es.object.to-string.js");

require("core-js/modules/es.object.get-own-property-descriptor.js");

require("core-js/modules/web.dom-collections.for-each.js");

require("core-js/modules/es.object.get-own-property-descriptors.js");

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.setRenderData = void 0;

require("core-js/modules/es.array.slice.js");

require("core-js/modules/es.regexp.exec.js");

require("core-js/modules/es.string.split.js");

require("core-js/modules/es.array.join.js");

require("core-js/modules/es.array.splice.js");

require("core-js/modules/es.string.replace.js");

var _package = _interopRequireDefault(require("../../package.json"));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }

function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }

function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }

var version = _package.default.version; // 处理模板

var handleUrl = function handleUrl(url) {
  // 去除参数 .去除后缀 .去除动态部分 .去除第一个空值
  url = url.split('?')[0].split('.')[0].split('-')[0].slice(1); // 去除动态参数（第三级是参数）

  var urls = url.split('/');
  var len = urls.length;
  url = len > 2 ? urls.splice(0, 2).join('/') : url;
  return url;
}; // 处理模块


var handleModule = function handleModule(render) {
  var index = render.indexOf('/');

  if (index !== -1) {
    var firstLetter = render.charAt(index + 1);
    var firstLetterToUp = firstLetter.toUpperCase();
    return render.replace('/' + firstLetter, firstLetterToUp);
  }
}; // 模板数据定义


var setRenderData = function setRenderData(req, res, next) {
  var url = req.url;
  url = handleUrl(url); // 模板

  var render = url || 'index'; // 模块

  var module = handleModule(render) || 'index';
  res.renderData = {
    // 自定义全局数据（该数据已在全局输出到 js），在此添加数据需提醒大家
    qqtCustom: {
      version: version,
      // 版本
      module: module,
      // 模块标识
      render: render,
      // 渲染模板
      tplConfig: [] // 模板配置

    },
    // query 参数（该数据已在全局输出到 js）
    qqtQuery: _objectSpread({
      // 访问类型 （编辑 tplEdit or 预览 tplPreview）
      mode: req.query.mode || 'tplOnline'
    }, req.query),
    // params 参数（该数据已在全局输出到 js）
    qqtParams: req.params,
    // 接口数据（测试数据）
    qqtData: {
      detail: {
        title: 'title',
        keywords: 'keywords',
        description: 'description',
        tplClass: 'tplOne',
        headerClass: 'headerOne',
        footerClass: 'footerOne',
        bannerList: [{}]
      }
    }
  };
  next();
};

exports.setRenderData = setRenderData;